package com.tangfuzhong.ext;

import org.springframework.context.ApplicationEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;

/**
 * springEvent
 * spring事件的使用
 */
@Service
public class UserEventService {


	/**
	 * 如果ApplicationEvent有发布时间的动作，这里会收到
	 */
	@EventListener(classes={ApplicationEvent.class})
	public void listen(ApplicationEvent event){
		System.out.println("UserEventService1。。ApplicationEvent，监听到的事件："+event);
	}

	/**
	 * 如果UserEvent有发布事件，这里会收到
	 * 这里有个教训：applicationContext加载完成后，发布事件可以顺利监听到
	 * 但是如果发布事件的动作使用@PostConstruct来触发运行发送事件，由于这个时候可能监听都未初始化，所以收不到事件
	 */
	@EventListener(classes={LogEvent.class})
	public void logEvent(LogEvent event){
		System.out.println("LogEvent。。监听到的事件："+event);
		System.out.println("处理logEvent并保存到数据库。。。");
	}

}
